<?php
namespace Geo\City;

use Crud\CrudConfig as BaseConfig;
use Geo\City;

/**
 * Конфиг для формы поиска
 * с настройкой полей и указанием дополнительных параметров
 *
 * Унаследован от абстрактного CrudConfig
 */
class CrudConfig extends BaseConfig {

	static $config = [
		// Указываем модель
		'model' => 'Geo\City',
		'entityName' => 'City'
	];

	static $tableConfig = [
		
		/**
		 *
		 * @var array конфиг для таблицы, в columns хранится список колонок, в каждой колумн хранится поле из которого мы его берем, и возможность сортировки
		 *      ,если указан mapaction тогда будет другой результат, в мапакшене надо определить акшен, который мы будем вызывать, филдспараметры, это те поля из модели которые пойдут в параметры
		 *      каунтонпайдж это количество элементов на странице, дефолтное 10.
		 */
		
		'columns' => [
			'name' => [
				'field' => 'title',
				'canSort' => true
			],
			'Long name' => [
				'field' => 'longTitle',
				'canSort' => true
			],
			'District' => [
				'mapAction' => [
					'action' => 'geo.getDistrict',
					'fieldsParams' => [
						'id' => 'district'
					],
					// 'view' => 'withLabel'
					'canSort' => false
				]
			]
		],
		'countOnPage' => 2
	];

	static $searchFormConfig = [
		
		// Здесь различные HTML-опции для формы
		'htmlOptions' => [
			'method' => 'POST',
			'class' => 'form-horizontal clearfix active-crud-form',
			'id' => 'SearchFormConfig'
		],
		// Список и настройка элементов формы (поля / кнопки и т.д.)
		// Для поиска по тождественно-равному слову / фразе: 'searchType' => 'equal'.
		// Для поиска по частичному слову / фразе: 'searchType' => 'match'.
		'elements' => [
			'title' => array(
				'label' => 'Title',
				'type' => 'text',
				'filters' => 'trim',
				'searchType' => 'equal'
			),
			'longTitle' => array(
				'label' => 'Long Title',
				'type' => 'text',
				'filters' => 'trim',
				'searchType' => 'match'
			),
			'submit' => array(
				'htmlOptions' => [
					'class' => 'vr-btn-accept'
				],
				'label' => 'Filter',
				'type' => 'submit'
			)
		]
	];

	static $editFormConfig = array(
		'htmlOptions' => array(
			'method' => 'POST',
			// два последних класса для изоляции отработки отправки формы именно обработчиком этого модуля
			'class' => 'form-horizontal custom-submit crud-ajax-form',
			'role' => 'form'
		),
		'style' => 'modal',
		'elements' => array(
			
			'title' => array(
				'type' => 'text',
				'label' => 'City',
				'validators' => [
					'notEmpty'
				]
			),
			'latitude' => array(
				'type' => 'text',
				'label' => 'Latitude'
			),
			'longitude' => array(
				'type' => 'text',
				'label' => 'Longitude'
			),
			'countryCode' => array(
				'type' => 'text',
				'label' => 'Country Code'
			),
			
			'submit' => array(
				'label' => 'Save',
				'type' => 'submit'
			)
		)
	);
}